Skip to main content

DopplerController

The DopplerController handles retrieval of radar images for weather data visualization.

Overview

This controller provides access to radar images stored in Azure Blob Storage. It processes time-based requests and returns radar imagery for specific geographic areas (quad keys) and time periods.

Data Sources

  • Azure Blob Storage: radar-images container
  • Configuration: appsettings.json for connection string
  • Error Storage: Azure Table Storage for error logging

Endpoints

GET /api/doppler/images

Retrieves radar images based on simulation time, duration, and geographic location.

Query Parameters:

  • simulationStartDateTime (string): Start time of simulation
  • minutes (string): Duration in minutes from start time
  • quadKey (string): Geographic quad key for tile location

Response:

  • 200 OK: Returns image stream (PNG format)
  • 404 Not Found: Image not available
  • 500 Internal Server Error: Storage or processing error

Data Flow:

Blob Storage Structure:

radar-images/
├── {YYYY-MM-ddTHH:mm:sszzz}/
│ ├── {quadKey1}.png
│ ├── {quadKey2}.png
│ └── ...

Time Processing:

  • Input time is rounded to nearest 15-minute interval
  • Format: yyyy-MM-ddTHH:mm:sszzz
  • UTC timezone handling

Azure Storage Details

Blob Container

  • Container Name: radar-images
  • Access Level: Read-only
  • Content Type: image/png

Error Handling

  • Errors are logged to Azure Table Storage
  • Application name: SWMM5WEB
  • Includes error message and stack trace

Configuration

Required Settings:

{
"Values": {
"CloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net"
}
}

Dependencies

  • Azure.Storage.Blobs
  • Azure.Data.Tables
  • GqcStorage1 (Storage utilities)
  • ConstantsSwmm (Constants)

Error Scenarios

  1. Missing Image: Returns null when blob doesn't exist
  2. Storage Connection: Handles Azure storage exceptions
  3. Invalid Parameters: Validates time and quad key parameters
  4. Network Issues: Graceful handling of download failures

Performance Considerations

  • Uses memory streams for efficient image transfer
  • Direct blob download without intermediate processing
  • Minimal memory footprint for large image files